package com.jy.api.patient;
import com.jy.api.patient.dto.BingRenXXDto;
import com.jy.api.patient.dto.PatientIndexDto;
import com.jy.framework.base.entity.Page;
import com.jy.framework.base.entity.Result;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * EMPI服务接口，提供对EMPI系统访问
 * @author Alen
 * @date 2024/7/15 15:17
 * @since 2024/7/15 15:17
 */
public interface PatientAPI {
    /**
     *获取居民交叉索引信息(互联互通使用)
     * /bingrenxx/getHLHTJMJCSYList
     * @param eid 业务ID
     * @param appId 域ID（所属程序ID）
     * @return
     */
    Result<List<BingRenXXDto>> getHLHTJMJCSYList(@RequestParam("eid") String eid, @RequestParam(value = "appId",required = false) String appId);

    /**
     *分页获取居民信息(互联互通使用)
     * /bingrenxx/pageHLHTJMList
     * @param hyzk 婚姻状况
     * @param swbj 死亡标记
     * @param qscsrq 出生日期查询开始日期
     * @param zzcsrq 出生日期查询结束日期
     * @param xbdm 性别代码
     * @param from 开始记录
     * @param maxCount 返回大小
     * @return
     */
    Result<Page<BingRenXXDto>> pageHLHTJMList(@RequestParam(value = "hyzk",required = false) String hyzk, @RequestParam(value = "swbj",required = false) String swbj, @RequestParam(value = "qscsrq",required = false) String qscsrq, @RequestParam(value = "zzcsrq",required = false) String zzcsrq, @RequestParam(value = "xbdm",required = false) String xbdm, @RequestParam(value = "from",defaultValue = "1",required = false) Integer from, @RequestParam(value = "maxCount",defaultValue = "10",required = false) Integer maxCount);


    /**
     * 根据证件号码查询患者信息
     * /bingrenxx/findBySFZ
     * @param zhengJianHM 证件号码
     * @return
     */
    BingRenXXDto findBySFZ(@RequestParam("zhengJianHM") String zhengJianHM);

    /**
     * 根据ID查询患者信息
     * /bingrenxx/findById
     * @param id 患者ID
     * @return
     */
    BingRenXXDto findById(@RequestParam("id") String id);

    /**
     * 添加或者更新
     * 有证件信息会更新原有数据,否则插入数据
     * /bingrenxx/insertOrUpdate
     * @param bingRenXXDto 病人信息
     * @return
     */
    String insertOrUpdate(@RequestBody BingRenXXDto bingRenXXDto);

    /**
     * 病人索引empi关系-多参
     * @param xingMing 姓名
     * @param type 1身份证 2empi
     * @param zhengJianHM 证件号
     * @return
     */
    Result<List<PatientIndexDto>> patientIndexs( String xingMing,  Integer type,  String zhengJianHM);

    /**
     * 病人索引empi关系-empi
     * @param empi empi号
     * @return
     */
    Result<PatientIndexDto> patientIndex(String empi);
}
